package com.xjscrm.common.utils.ww.dto;

import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.util.List;

/**
 *
 */
@Data
public class WwCreateBulkSendDTO {

    @ApiModelProperty("群发任务的类型，默认为single，表示发送给客户，group表示发送给客户群")
    private String chat_type;
    @ApiModelProperty("客户的external_userid列表，仅在chat_type为single时有效，最多可一次指定1万个客户")
    private List<String> external_userid;
    @ApiModelProperty("客户群id列表，仅在chat_type为group时有效，最多可一次指定2000个客户群。指定群id之后，收到任务的群主无须再选择客户群，仅对4.1.10及以上版本的企业微信终端生效")
    private List<String> chat_id_list;
    @ApiModelProperty("要进行群发的客户标签列表，同组标签之间按或关系进行筛选，不同组标签按且关系筛选，每组最多指定100个标签，支持规则组标签")
    private GroupList tag_filter;
    @ApiModelProperty("发送企业群发消息的成员userid，当类型为发送给客户群时必填")
    private String sender;
    @ApiModelProperty("是否允许成员在待发送客户列表中重新进行选择，默认为false，仅支持客户群发场景")
    private boolean allow_select;
    @ApiModelProperty("消息文本内容")
    private TextContent text;
    @ApiModelProperty("附件，最多支持添加9个附件")
    private List<AttachmentItem> attachments;

    @Data
    public static class AttachmentItem {

        @ApiModelProperty("消息附件类型: image: 图片, link: 链接, miniprogram: 小程序, video: 视频, file: 文件")
        private String msgtype;
        @ApiModelProperty("图片内容")
        private Image image;
        @ApiModelProperty("链接内容")
        private Link link;
        @ApiModelProperty("视频内容")
        private Media video;
        @ApiModelProperty("文件内容")
        private Media file;
        @ApiModelProperty("小程序内容")
        private Miniprogram miniprogram;
    }

    @Data
    public static class GroupList {
        @ApiModelProperty("要进行群发的客户标签列表，同组标签之间按或关系进行筛选，不同组标签按且关系筛选，每组最多指定100个标签，支持规则组标签")
        private List<TagListItem> group_list;
    }

    @Data
    public static class TagListItem {
        @ApiModelProperty("标签列表")
        private List<String> tag_list;
    }

    @Data
    public static class TextContent {
        @ApiModelProperty("消息文本内容")
        private String content;
    }

    @Data
    public static class Image {

        @ApiModelProperty("媒体id")
        private String media_id;
        @ApiModelProperty("图片地址")
        private String pic_url;
    }

    @Data
    public static class Media {

        @ApiModelProperty("媒体id")
        private String media_id;
    }

    @Data
    public static class Link {
        @ApiModelProperty("标题")
        private String title;
        @ApiModelProperty("图片地址")
        private String picurl;
        @ApiModelProperty("描述")
        private String desc;
        @ApiModelProperty("链接地址")
        private String url;
    }

    @Data
    public static class Miniprogram {
        @ApiModelProperty("标题")
        private String title;
        @ApiModelProperty("图片媒体id")
        private String pic_media_id;
        @ApiModelProperty("应用id")
        private String appid;
        @ApiModelProperty("路径")
        private String page;
    }
}
